package com.erp.user.service;

import com.erp.user.domain.ErpDistributionUser;
import com.erp.user.domain.bo.ErpDistributionUserBo;
import com.erp.user.domain.vo.ErpDistributionUserVo;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.web.oldPage.TableDataInfo;

import java.util.List;

/**
 * @Description: 分销员开户信息Service接口
 * @Author: j.zh
 * @Date: 2024/5/2
 * @Version: 4.0.0
**/
public interface IErpDistributionUserService {

    /**
     * @param distributionUserId
     * @return com.erp.user.domain.ErpDistributionUser
     * @Description: 根据主键获取分销员信息
     * @Author: j.zh
     * @Date: 2024/5/2
     * @Version: 4.0.0
     **/
    ErpDistributionUser getDistributionUserById(Long distributionUserId);

    /**
     * @Description: 根据UserId获取分销员信息
     * @Author: j.zh
     * @Date: 2024/6/25
     * @param userId
     * @return
     * @Version: 4.2.0
    **/
    ErpDistributionUser getByUserId(Long userId);

    /**
     * @param distributionUser
     * @return java.lang.Long 主键
     * @Description: 新增分销员
     * @Author: j.zh
     * @Date: 2024/5/2
     * @Version: 4.0.0
     **/
    Long insertDistributionUser(ErpDistributionUser distributionUser);

    /**
     * @param bo
     * @param pageQuery
     * @return com.ruoyi.common.core.web.oldPage.TableDataInfo<com.erp.user.domain.vo.ErpDistributionUserVo>
     * @Description: 查询分公司开户信息列表
     * @Author: j.zh
     * @Date: 2024/5/2
     * @Version: 4.0.0
     **/
    TableDataInfo<ErpDistributionUserVo> queryPageList(ErpDistributionUserBo bo, PageQuery pageQuery);

    /**
     * @return java.lang.String
     * @Description: 生成六位数的邀请码
     * @Author: j.zh
     * @Date: 2024/5/2
     * @Version: 4.0.0
     **/
    String createInvitationCode();

    /**
     * @param codeType
     * @return java.lang.String
     * @Description: 生成身份代码
     * @Author: j.zh
     * @Date: 2024/5/2
     * @Version: 4.0.0
     **/
    String createIdentityCode(Integer codeType);

    List<ErpDistributionUserVo> queryPageBranchAndAgent();

    List<ErpDistributionUserVo> queryPageBranchAndAgentUser();

    /**
     * @Description: 获取用户ERP有效期
     * @Author: j.zh
     * @Date: 2024/5/3
     * @param userId
     * @return java.lang.String
     * @Version: 4.0.0
    **/
    String getUserExpirationTime(Long userId);

    /**
     * @Description: 根据分销员ID和类型，查询分销员列表
     * @Author: j.zh
     * @Date: 2024/5/4
     * @param distributionUserId
     * @param type
     * @return java.util.List<com.erp.user.domain.ErpDistributionUser>
     * @Version: 4.0.0
    **/
    List<ErpDistributionUser> getListByIdAndType(Long distributionUserId, Integer type);

    /**
     * @Description: 根据类型查询分销成员列表 1-分公司 2-代理 3-ERP 其他-全部
     * @Author: j.zh
     * @Date: 2024/7/4
     * @param type
     * @return
     * @Version: 4.2.0
    **/
    List<ErpDistributionUser> getListByDistributionUserType(Integer type);
}
